package org.sistemafinanciero.entity;

// Generated 02-may-2014 11:48:28 by Hibernate Tools 4.0.0

import java.math.BigInteger;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

/**
 * Caja generated by hbm2java
 */
@Entity
@Table(name = "CAJA", schema = "BDSISTEMAFINANCIERO")
@XmlRootElement(name = "caja")
@XmlAccessorType(XmlAccessType.NONE)
@NamedQueries({ @NamedQuery(name = Caja.findByUsername, query = "SELECT c FROM Caja c INNER JOIN c.trabajadorCajas tc INNER JOIN tc.trabajador t WHERE t.usuario = :usuario") })
public class Caja implements java.io.Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public final static String findByUsername = "Caja.findByUsername";

	private BigInteger idCaja;
	private String denominacion;
	private String abreviatura;
	private int estado;
	private int abierto;
	private int estadoMovimiento;
	private Set trabajadorCajas = new HashSet(0);
	private Set bovedaCajas = new HashSet(0);
	private Set historialCajas = new HashSet(0);

	public Caja() {
	}

	public Caja(BigInteger idCaja, String denominacion, String abreviatura, boolean estado, boolean abierto, boolean estadoMovimiento) {
		this.idCaja = idCaja;
		this.denominacion = denominacion;
		this.abreviatura = abreviatura;
		this.estado = (estado ? 1 : 0);
		this.abierto = (abierto ? 1 : 0);
		this.estadoMovimiento = (estadoMovimiento ? 1 : 0);
	}

	public Caja(BigInteger idCaja, String denominacion, String abreviatura, boolean estado, boolean abierto, boolean estadoMovimiento, Set trabajadorCajas, Set bovedaCajas, Set historialCajas) {
		this.idCaja = idCaja;
		this.denominacion = denominacion;
		this.abreviatura = abreviatura;
		this.estado = (estado ? 1 : 0);
		this.abierto = (abierto ? 1 : 0);
		this.estadoMovimiento = (estadoMovimiento ? 1 : 0);
		this.trabajadorCajas = trabajadorCajas;
		this.bovedaCajas = bovedaCajas;
		this.historialCajas = historialCajas;
	}

	@XmlElement(name = "id")
	@DecimalMin(value = "0", inclusive = false)
	@Id
	@Column(name = "ID_CAJA", unique = true, nullable = false, precision = 22, scale = 0)
	public BigInteger getIdCaja() {
		return this.idCaja;
	}

	public void setIdCaja(BigInteger idCaja) {
		this.idCaja = idCaja;
	}

	@XmlElement(name = "denominacion")
	@NotNull
	@Size(min = 0, max = 20)
	@NotBlank
	@NotEmpty
	@Column(name = "DENOMINACION", nullable = false, length = 40, columnDefinition = "nvarchar2")
	public String getDenominacion() {
		return this.denominacion;
	}

	public void setDenominacion(String denominacion) {
		this.denominacion = denominacion;
	}

	@XmlElement(name = "abreviatura")
	@NotNull
	@Size(min = 0, max = 10)
	@NotBlank
	@NotEmpty
	@Column(name = "ABREVIATURA", nullable = false, length = 20, columnDefinition = "nvarchar2")
	public String getAbreviatura() {
		return this.abreviatura;
	}

	public void setAbreviatura(String abreviatura) {
		this.abreviatura = abreviatura;
	}

	@XmlElement(name = "estado")
	@NotNull
	@Column(name = "ESTADO", nullable = false, precision = 22, scale = 0)
	public boolean getEstado() {
		return (this.estado == 1 ? true : false);
	}

	public void setEstado(boolean estado) {
		this.estado = (estado ? 1 : 0);
	}

	@XmlElement(name = "abierto")
	@NotNull
	@Column(name = "ABIERTO", nullable = false, precision = 22, scale = 0)
	public boolean getAbierto() {
		return (this.abierto == 1 ? true : false);
	}

	public void setAbierto(boolean abierto) {
		this.abierto = (abierto ? 1 : 0);
	}

	@XmlElement(name = "estadoMovimiento")
	@NotNull
	@Column(name = "ESTADO_MOVIMIENTO", nullable = false, precision = 22, scale = 0)
	public boolean getEstadoMovimiento() {
		return (this.estadoMovimiento == 1 ? true : false);
	}

	public void setEstadoMovimiento(boolean estadoMovimiento) {
		this.estadoMovimiento = (estadoMovimiento ? 1 : 0);
	}

	@XmlTransient
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "caja")
	public Set<TrabajadorCaja> getTrabajadorCajas() {
		return this.trabajadorCajas;
	}

	public void setTrabajadorCajas(Set trabajadorCajas) {
		this.trabajadorCajas = trabajadorCajas;
	}

	@XmlTransient
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "caja")
	public Set<BovedaCaja> getBovedaCajas() {
		return this.bovedaCajas;
	}

	public void setBovedaCajas(Set bovedaCajas) {
		this.bovedaCajas = bovedaCajas;
	}

	@XmlTransient
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "caja")
	public Set<HistorialCaja> getHistorialCajas() {
		return this.historialCajas;
	}

	public void setHistorialCajas(Set historialCajas) {
		this.historialCajas = historialCajas;
	}

}
